package day6;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

//4.选做题--- 综合类
//实现一个学生类(学号(String) 姓名(String)  专业(String)  成绩(double)...) 要实现一个学生成绩管理系统(
// 可以通过Map集合来存储key:存储学号  value:存储学生对象)
//效果如下: ----------
//XXXX学生成绩管理
//1.查询学生信息
//2.新增学生信息
//3.批量删除学生信息
//4.退出系统
//--------------------
//要求1:可以支持程序重启还可以查询之前的学生信息(提示:要做序列化和反序列化)
//要求2:实现新增学生信息
//要求3:支持按照学号查询学生信息(支持模糊查询 比如: 输入学号001 可以查询出 sc001, sc0010,...)
//(提示:输入的搜索信息 只要是学生学号包含的信息都可以查询出来)
//要求4:支持批量删除 学生信息 可以输入多个学号 可以通过删除多个学生信息
//(提示:控制台输入sc001,sc002,sc003 然后通过字符串分割split()进行分组找到所有要删除的学号...)
//要求5:...其他功能自行扩展...
public class Student{
    String stuno;
    String name;
    String major;
    double score;
    public Student(String stuno, String name, String major, double score) {
        this.stuno = stuno;
        this.name = name;
        this.major = major;
        this.score = score;
    }
}
class TestStudent{
    static Integer n=1;//入学顺序
    static Scanner sc=new Scanner(System.in);
    static Map<String,Student> map=new HashMap<>();

    public static void main(String[] args) {
        one();
    }
    public static void one(){
        while(true){
            System.out.println("XXX学生成绩管理系统");
            System.out.println("1.查询");
            System.out.println("2.新增");
            System.out.println("3.批量");
            System.out.println("4.退出");
            int n=sc.nextInt();
            switch(n){
                case 1:select();break;
                case 2:insert();break;
                case 3:delete();break;
                case 4:return;
            }
        }
    }
    public static void select(){
        System.out.println("请输入要查询的学号");
        String no=sc.next(); //001
        for(String key:map.keySet()){
            if(key.contains(no)){//判断是否包含的
                Student stu=map.get(key);
                System.out.println(stu.stuno+" "+stu.name);
            }
        }
        //Map.Entry(key和value)
        //jdk1.8的Stream流的方法
//        map.entrySet()  //获取map集合的所有entry对象(包含key和value)
//                .stream() //把Entry对象的集合 存入数据流中
//                .filter((Map.Entry<String,Student> e)->
//                        e.getKey().contains(no)) //过滤器 判断哪些数据不要
//                .forEach((Map.Entry e)->
//                System.out.println(e.getKey()+" "+e.getValue())); //遍历的方法
    }
    public static void insert(){
        //System.out.println("请输入学号");//随机产生的...
        String stuno=getNo();
        System.out.println("请输入姓名");
        String name=sc.next();
        System.out.println("请输入专业");
        String major=sc.next();
        System.out.println("请输入成绩");
        double score=sc.nextDouble();
        Student stu=new Student(stuno,name,major,score);
        map.put(stuno,stu);
        System.out.println(name+"新增成功");
    }
    public static String getNo(){  //自动生成学号的方法
        StringBuilder sb=new StringBuilder("SC");
        sb.append(n++ +"");
        int len=sb.length();
        if(len<5){
            for(int i=0;i<5-len;i++){
                sb.insert(2,"0");
            }
        }
        System.out.println(sb);
        return sb.toString();
    }
    public static void delete(){
        System.out.println("请输入要删除的学号 多个用,号隔开");
        //abc,SC003,003;
        String nos=sc.next();
        String[] stunos=nos.split(",");
        for(String no:stunos){
            if(map.containsKey(no)){
                map.remove(no);
                System.out.println(no+"学号删除成功");
            }
        }
    }
}
